package com.ysd.dao.impl;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.ysd.entity.Product;
import com.ysd.entity.Productcategory;
import com.ysd.util.DBManager;

public class ProductcategoryDaoImpl { // 实现类,起名: 实体类名DaoImpl
	public List<Productcategory> getProductcategory() {
		List<Productcategory> ProductcategoryList = new ArrayList<Productcategory>();
		// 1.建立连接
		Connection conn = DBManager.getConnection();
		Statement st = null;
		ResultSet rs = null;
		try {// 正常
				// 2.创建Statement对象
			st = conn.createStatement();
			// 3.sql语句
			String sql = "select * from productcategory";
			// 4.执行sql语句
			rs = st.executeQuery(sql);// execute执行Query查询
			// 5.遍历结果集
			while (rs.next()) {
				int productCategoryId = rs.getInt("productCategoryId");
				String productCategoryName = rs.getString("productCategoryName");
				String productCategoryImg = rs.getString("productCategoryImg");
				Productcategory productcategory = new Productcategory(productCategoryId, productCategoryName,
						productCategoryImg);
				ProductcategoryList.add(productcategory);
			}
			return ProductcategoryList;// 正常执行返回用户集合
		} catch (SQLException e) {// 异常
			e.printStackTrace();
			return null;// 异常执行返回空
		} finally {
			DBManager.closeAll(conn, st, rs);
		}
	}

	/**
	 * 通过系列id获取系列数据
	 */
	public List<Productcategory> getProductcategoryList(int pId) {
		List<Productcategory> pList = new ArrayList<Productcategory>();
		// 1.建立连接
		Connection conn = DBManager.getConnection();
		Statement st = null;
		ResultSet rs = null;
		try {// 正常
				// 2.创建Statement对象
			st = conn.createStatement();
			// 3.sql语句
			String sql = "select * from productcategory where productCategoryId=" + pId;
			// 4.执行sql语句
			rs = st.executeQuery(sql);// execute执行Query查询
			// 5.遍历结果集
			while (rs.next()) {
				int productCategoryId = rs.getInt("productCategoryId");
				String productCategoryName = rs.getString("productCategoryName");
				String productCategoryImg = rs.getString("productCategoryImg");
				Productcategory productcategory = new Productcategory(productCategoryId, productCategoryName,
						productCategoryImg);
				pList.add(productcategory);
			}
			return pList;// 正常执行返回用户集合
		} catch (SQLException e) {// 异常
			e.printStackTrace();
			return null;// 异常执行返回空
		} finally {
			DBManager.closeAll(conn, st, rs); // 关闭连接
		}
	}

	/**
	 * 根据分类id删除产品分类
	 * 
	 * @param cId 要删除的产品分类的id
	 * @return 数据库受影响行数
	 */
	public int deleteProductCateById(int cId) {
		return DBManager.executeUpdate("delete from productcategory where productCategoryId=" + cId);
	}

	/**
	 * 添加产品分类
	 * @param pc
	 * @return 返回受影响行数
	 */
	public int addProductCategory(Productcategory pc) {
		return DBManager.executeUpdate("insert into productcategory values(null,'" + pc.getProductCategoryName() + "',null)");
	}
	
	/**
	 * 通过分类名称查询产品分类
	 * @param name
	 * @return
	 */
	public List<Productcategory> getProductCategoryByName(String name) {
		List<Productcategory> pcList = new ArrayList<Productcategory>();
		// 1.建立连接
		Connection conn = DBManager.getConnection();
		Statement st = null;
		ResultSet rs = null;
		try { // 正常
				// 2.创建Statement对象
			st = conn.createStatement();
			// 3.sql语句
			String sql = "select * from productcategory where productCategoryName='" + name + "'";
			// 4.执行sql语句
			rs = st.executeQuery(sql); // execute执行Query查询
			// 5.遍历结果集
			while (rs.next()) {
				int productCategoryId = rs.getInt("productCategoryId");
				String productCategoryName = rs.getString("productCategoryName");
				Productcategory pc = new Productcategory(productCategoryId, productCategoryName);
				pcList.add(pc);
			}
			return pcList; // 正常执行返回用户集合
		} catch (SQLException e) { // 异常
			e.printStackTrace();
			return null; // 异常执行返回空
		} finally {
			DBManager.closeAll(conn, st, rs); // 关闭连接
		}
	}
	
	// 返回list是因为查询的结果可能是多条
	/**
	 * 根据id查询,返回单个对象是因为查询的结果只有可能是一条
	 * @param id
	 * @return
	 */
	public Productcategory getProductCategoryById(int id) {
		Connection conn = DBManager.getConnection();
		Statement st = null;
		ResultSet rs = null;
		Productcategory pc = null;
		try { // 正常
				// 2.创建Statement对象
			st = conn.createStatement();
			// 3.sql语句
			String sql = "select * from productcategory where productCategoryId=" + id;
			// 4.执行sql语句
			rs = st.executeQuery(sql); // execute执行Query查询
			// 5.遍历结果集
			while (rs.next()) {
				int productCategoryId = rs.getInt(1);
				String productCategoryName = rs.getString(2);
				pc = new Productcategory(productCategoryId, productCategoryName);
			}
			return pc; // 正常执行返回用户集合
		} catch (SQLException e) { // 异常
			e.printStackTrace();
			return null; // 异常执行返回空
		} finally {
			DBManager.closeAll(conn, st, rs); // 关闭连接
		}
	}
	
	/**
	 * 修改产品分类
	 * @param pc 
	 * @return 返回受影响行数
	 */
	public int updateProductCategoryById(Productcategory pc) {
		String sql = "update productcategory set productCategoryName='"+pc.getProductCategoryName()+"' where productCategoryId="+pc.getProductCategoryId();
		System.out.println(sql);
		return DBManager.executeUpdate(sql);
	}
	
	/**
	 * 分页查询
	 * @param page
	 * @param size
	 * @return
	 */
	public List<Productcategory> getProductCategoryByPage(int page,int size) {
		List<Productcategory> pcList = new ArrayList<Productcategory>();
		
		Connection conn = DBManager.getConnection();
		Statement st = null;
		ResultSet rs = null;
		Productcategory pc = null;
		try { // 正常
				// 2.创建Statement对象, 这个对象的作用是执行sql语句
			st = conn.createStatement();
			// 3.sql语句
			String sql = "select * from productcategory limit "+(page-1)*size+", " + size;
			System.out.println(sql);
			// 4.执行sql语句
			rs = st.executeQuery(sql); // execute执行Query查询
			// 5.遍历结果集
			while (rs.next()) {
				int productCategoryId = rs.getInt(1);
				String productCategoryName = rs.getString(2);
				pc = new Productcategory(productCategoryId, productCategoryName);
				pcList.add(pc);
			}
			return pcList; // 正常执行返回用户集合
		} catch (SQLException e) { // 异常
			e.printStackTrace();
			return null; // 异常执行返回空
		} finally {
			DBManager.closeAll(conn, st, rs); // 关闭连接
		}
	}
	/***
	 *根据id批量删除产品分类
	 *返回受影响行数 int
	 *
	 *
	 */
	public int delProductcategoryByIds(String ids) {
		return DBManager.executeUpdate("delete from productcategory where productCategoryId in("+ids+")");
	}
}
